ரியாக்ட் பதிப்புகள், இணக்கத்தன்மை சரிபார்ப்புகள், மற்றும் தடையற்ற மேம்பாடுகளின் நுணுக்கங்களைத் தெரிந்துகொள்ளுங்கள். உலகளவில் நிலையான, உயர் செயல்திறன் கொண்ட பயன்பாடுகளை உருவாக்கும் டெவலப்பர்களுக்கான ஒரு வழிகாட்டி.
டெவலப்பரின் திசைகாட்டி: வலுவான உலகளாவிய பயன்பாடுகளுக்கான ரியாக்ட் பதிப்புகள் மற்றும் இணக்கத்தன்மையை வழிநடத்துதல்
நவீன இணைய மேம்பாட்டின் மாறும் சூழலில், ரியாக்ட் ஒரு முக்கிய லைப்ரரியாக விளங்குகிறது, இது உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கு சிக்கலான மற்றும் உயர் ஊடாடும் பயனர் இடைமுகங்களை உருவாக்க அதிகாரம் அளிக்கிறது. தொடர்ச்சியான புதுப்பிப்புகள் மற்றும் புதிய அம்சங்களால் குறிக்கப்படும் அதன் தொடர்ச்சியான பரிணாமம் ஒரு இருமுனைக் கத்தி போன்றது: இது புதுமை மற்றும் மேம்பட்ட செயல்திறனை வழங்குகிறது, ஆனால் பதிப்பு மேலாண்மை மற்றும் இணக்கத்தன்மையை சரிபார்க்கும் முக்கியமான சவாலையும் முன்வைக்கிறது. டெவலப்மென்ட் குழுக்களுக்கு, குறிப்பாக பல்வேறு புவியியல் இடங்களில் செயல்படும் மற்றும் பல்வேறு மூன்றாம் தரப்பு கருவிகளை ஒருங்கிணைக்கும் குழுக்களுக்கு, ரியாக்ட் பதிப்புகளைப் புரிந்துகொண்டு உன்னிப்பாக நிர்வகிப்பது ஒரு சிறந்த நடைமுறை மட்டுமல்ல; இது பயன்பாட்டின் நிலைத்தன்மை, செயல்திறன் மற்றும் நீண்ட கால பராமரிப்பை உறுதி செய்வதற்கான ஒரு முழுமையான தேவையாகும்.
இந்த விரிவான வழிகாட்டி, தனிப்பட்ட பங்களிப்பாளர்கள் முதல் உலகளாவிய பொறியியல் தலைவர்கள் வரையிலான டெவலப்பர்களுக்கு, ரியாக்ட்டின் பதிப்புச் சூழலை திறமையாக வழிநடத்தத் தேவையான அறிவு மற்றும் உத்திகளை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது. ரியாக்ட் பதிப்புகள் எவ்வாறு கட்டமைக்கப்பட்டுள்ளன, அவற்றை எங்கே கண்டுபிடிப்பது, இணக்கத்தன்மை ஏன் மிக முக்கியமானது, மற்றும் உங்கள் பயன்பாடுகளை சமீபத்திய முன்னேற்றங்களுடன் இணக்கமாக வைத்திருக்க எடுக்க வேண்டிய நடைமுறை நடவடிக்கைகள் ஆகியவற்றை நாம் ஆராய்வோம்.
ரியாக்ட்டின் பதிப்பு தத்துவத்தை புரிந்துகொள்ளுதல்: செமென்டிக் பதிப்பக முறை (SemVer)
ரியாக்ட்டின் பதிப்பு உத்தியின் மையத்தில் செமென்டிக் பதிப்பக முறை (SemVer) உள்ளது, இது மென்பொருள் வெளியீடுகளுக்கு முன்கணிப்பு மற்றும் தெளிவைக் கொண்டுவரும் பரவலாக ஏற்றுக்கொள்ளப்பட்ட ஒரு மரபு. SemVer-ஐப் புரிந்துகொள்வது ரியாக்ட் இணக்கத்தன்மையை மாஸ்டர் செய்வதற்கான முதல் படியாகும்.
ஒரு ரியாக்ட் பதிப்பின் கட்டமைப்பு: MAJOR.MINOR.PATCH
ஒவ்வொரு ரியாக்ட் பதிப்பு எண்ணும், 18.2.0 போல, மூன்று தனித்துவமான பகுதிகளைக் கொண்டுள்ளது, ஒவ்வொன்றும் ஒரு குறிப்பிட்ட வகை மாற்றத்தைக் குறிக்கிறது:
- மேஜர் (
18.x.x): இணக்கமற்ற API மாற்றங்கள் இருக்கும்போது இது அதிகரிக்கப்படுகிறது. அதாவது, முந்தைய மேஜர் பதிப்பிற்காக எழுதப்பட்ட குறியீடு ஒரு புதிய மேஜர் பதிப்பிற்கு மேம்படுத்தப்படும்போது செயலிழக்கக்கூடும். ஒரு மேஜர் பதிப்பை மேம்படுத்துவதற்கு பொதுவாக குறிப்பிடத்தக்க ஆய்வு மற்றும் சாத்தியமான குறியீடு மாற்றங்கள் தேவைப்படும். உதாரணமாக, ரியாக்ட் 17-இலிருந்து ரியாக்ட் 18-க்கு மாறியது, நிலை புதுப்பிப்புகளுக்கான தானியங்கி தொகுத்தல் மற்றும் புதிய ரூட் API போன்ற அடிப்படை மாற்றங்களை அறிமுகப்படுத்தியது, இது கவனமான இடம்பெயர்வு தேவைப்பட்டது. - மைனர் (x.
2.x): பின்தங்கிய இணக்கத்தன்மையுடன் புதிய செயல்பாடு சேர்க்கப்படும்போது இது அதிகரிக்கப்படுகிறது. மைனர் பதிப்புகள் புதிய அம்சங்கள், செயல்திறன் மேம்பாடுகள் அல்லது மேம்பாடுகளை அறிமுகப்படுத்துகின்றன, ஆனால் தற்போதுள்ள பொது API-களை உடைக்காது. இந்த புதுப்பிப்புகள் பொதுவாக பாதுகாப்பானவை மற்றும் புதிய திறன்களைப் பயன்படுத்திக்கொள்ள அடிக்கடி பரிந்துரைக்கப்படுகின்றன. - பேட்ச் (x.x.
0): பின்தங்கிய இணக்கத்தன்மையுடன் கூடிய பிழை திருத்தங்கள் மற்றும் உள் மறுசீரமைப்புகளுக்காக இது அதிகரிக்கப்படுகிறது. பேட்ச் பதிப்புகள் மிகவும் பாதுகாப்பான புதுப்பிப்புகள் ஆகும், இவை முதன்மையாக பிழைகள் அல்லது சிறிய செயல்திறன் மாற்றங்களை சரிசெய்கின்றன, புதிய அம்சங்களையோ அல்லது உடைக்கும் மாற்றங்களையோ அறிமுகப்படுத்தாது. பயன்பாட்டின் நிலைத்தன்மை மற்றும் பாதுகாப்பை உறுதிப்படுத்த பேட்ச் புதுப்பிப்புகளைப் பயன்படுத்துவது கிட்டத்தட்ட எப்போதும் பரிந்துரைக்கப்படுகிறது.
கூடுதலாக, நீங்கள் alpha, beta, அல்லது rc (வெளியீட்டு வேட்பாளர்) போன்ற முன்-வெளியீட்டு அடையாளங்களையும் சந்திக்கலாம். உதாரணமாக, 18.0.0-beta.1 என்பது வரவிருக்கும் ரியாக்ட் 18 வெளியீட்டின் ஒரு பீட்டா பதிப்பைக் குறிக்கிறது. இந்த பதிப்புகள் நிலையற்றவை மற்றும் முதன்மையாக சோதனைக்காக மட்டுமே, உற்பத்தி பயன்பாட்டிற்கு அல்ல.
டெவலப்பர்களுக்கான SemVer-இன் தாக்கங்கள்
SemVer, டெவலப்பர்களுக்கு அவர்களின் குறியீட்டுத் தளத்தில் புதுப்பிப்புகளின் தாக்கத்தை கணிக்க அதிகாரம் அளிக்கிறது. ஒரு மேஜர் பதிப்பு உயர்வு கவனமான திட்டமிடல் மற்றும் இடம்பெயர்வுக்கான தேவையைக் குறிக்கிறது, அதே நேரத்தில் மைனர் மற்றும் பேட்ச் புதுப்பிப்புகளை பொதுவாக அதிக நம்பிக்கையுடன் பயன்படுத்தலாம், குறிப்பாக ஒரு வலுவான சோதனைத் தொகுப்புடன். இந்த முன்கணிப்புத்தன்மை, உலகளாவிய குழுக்கள் மேம்பாட்டு முயற்சிகளை ஒருங்கிணைப்பதற்கு முக்கியமானது, ஏனெனில் இது எதிர்பாராத இடையூறுகளைக் குறைத்து, வெவ்வேறு நேர மண்டலங்கள் மற்றும் பணிப்பாய்வுகள் முழுவதும் சுமூகமான ஒத்துழைப்பை எளிதாக்குகிறது.
உங்கள் ரியாக்ட் பதிப்பைக் கண்டறிதல்: ஒரு நடைமுறை கருவித்தொகுப்பு
நீங்கள் இணக்கத்தன்மையை நிர்வகிப்பதற்கு முன், உங்கள் புராஜெக்ட் எந்த ரியாக்ட் பதிப்பைப் பயன்படுத்துகிறது என்பதை நீங்கள் துல்லியமாக அறிந்து கொள்ள வேண்டும். இந்த முக்கியமான தகவலைப் பெற பல முறைகள் உங்களை அனுமதிக்கின்றன.
package.json அறிக்கை: உங்கள் முதன்மை ஆதாரம்
பெரும்பாலான புராஜெக்ட்களுக்கு, உங்கள் புராஜெக்ட் கோப்பகத்தின் மூலத்தில் அமைந்துள்ள package.json கோப்பு, ரியாக்ட் உட்பட உங்கள் சார்புநிலைகளுக்கான உண்மையான ஆதாரமாகும். dependencies மற்றும் devDependencies பிரிவுகளைப் பாருங்கள்:
{
"name": "my-react-app",
"version": "0.1.0",
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"some-library": "^5.1.0"
},
"devDependencies": {
"@testing-library/react": "^14.0.0"
}
}
இந்த எடுத்துக்காட்டில், "react": "^18.2.0" என்பது, புராஜெக்ட் ரியாக்ட் பதிப்பு 18.2.0 அல்லது 18.x.x தொடரில் உள்ள எந்தவொரு இணக்கமான மைனர் அல்லது பேட்ச் பதிப்பையும் (எ.கா., 18.3.0, 18.2.1) பயன்படுத்த உள்ளமைக்கப்பட்டுள்ளது என்பதைக் குறிக்கிறது. கேரட் (^) சின்னம் இந்த வரம்பைக் குறிக்கிறது. ஒரு டில்ட் (~) பொதுவாக பேட்ச் புதுப்பிப்புகளை மட்டுமே அனுமதிக்கும் (எ.கா., ~18.2.0 18.2.1-ஐ அனுமதிக்கிறது ஆனால் 18.3.0-ஐ அல்ல), அதே நேரத்தில் "18.2.0" போன்ற ஒரு குறிப்பிட்ட பதிப்பு அதை துல்லியமாகப் பொருத்தும். உகந்த இணக்கத்தன்மைக்கு react மற்றும் react-dom ஆகியவை ஒரே மேஜர், மைனர், மற்றும் பேட்ச் பதிப்புகளுடன் குறிப்பிடப்பட்டுள்ளதை எப்போதும் உறுதிசெய்யவும்.
கட்டளை வரி பயன்பாடுகள்: npm மற்றும் yarn
உங்கள் பேக்கேஜ் மேலாளர் நிறுவப்பட்ட ரியாக்ட் பதிப்புகளை ஆய்வு செய்ய நேரடி வழிகளை வழங்குகிறது:
npm list react: உங்கள் புராஜெக்ட்டின் சார்புநிலை மரத்தில் நிறுவப்பட்ட ரியாக்ட் பதிப்பு(களை)க் காட்டும் ஒரு கட்டளையை இயக்குகிறது. வெவ்வேறு துணை சார்புநிலைகளுக்கு வெவ்வேறு (சாத்தியமான முரண்பாடான) ரியாக்ட் பதிப்புகள் தேவைப்பட்டால் நீங்கள் பல உள்ளீடுகளைக் காணலாம்.yarn why react: Yarn பயனர்களுக்கு இதேபோன்ற வெளியீட்டை வழங்குகிறது, எந்த பேக்கேஜ்கள் ரியாக்ட்டை சார்ந்துள்ளன மற்றும் அவற்றின் அந்தந்த பதிப்புகளை விவரிக்கிறது.npm view react version(அல்லதுyarn info react version): இந்த கட்டளை npm பதிவகத்தில் கிடைக்கும் ரியாக்ட்டின் சமீபத்திய நிலையான பதிப்பைக் காண்பிக்கும், இது ஒரு புதுப்பிப்பு உள்ளதா என்பதைச் சரிபார்க்க பயனுள்ளதாக இருக்கும்.
உலாவியில்: ரியாக்ட் டெவ்டூல்ஸ் மற்றும் React.version
உங்கள் ரியாக்ட் பயன்பாடு ஒரு உலாவியில் இயங்கும்போது, நீங்கள் பெரும்பாலும் பதிப்புத் தகவலைக் காணலாம்:
- ரியாக்ட் டெவ்டூல்ஸ் நீட்டிப்பு: நீங்கள் ரியாக்ட் டெவ்டூல்ஸ் உலாவி நீட்டிப்பை நிறுவியிருந்தால், உங்கள் உலாவியின் டெவலப்பர் கருவிகளைத் திறந்து, "Components" அல்லது "Profiler" தாவலுக்குச் சென்றால், பேனலின் மேலே ரியாக்ட் பதிப்பு பொதுவாகக் காட்டப்படும். இது இயக்கநேர பதிப்பைச் சரிபார்க்க ஒரு சிறந்த வழியாகும்.
React.version: நீங்கள் உங்கள் உலாவியின் கன்சோலில் நேரடியாக ரியாக்ட் பதிப்பை நிரல் ரீதியாக அணுகலாம். வெறுமனேReact.versionஎன டைப் செய்து Enter ஐ அழுத்தவும். இந்த உலகளாவிய மாறி (ரியாக்ட் உலகளவில் ஏற்றப்பட்டிருந்தால் அல்லது அணுகக்கூடியதாக இருந்தால்) தற்போது இயங்கும் ரியாக்ட் பதிப்பின் சரம் பிரதிநிதித்துவத்தைத் தரும். இந்த முறை பிழைத்திருத்தத்திற்கோ அல்லது தரமற்ற வழிகளில் ரியாக்ட்டை ஏற்றக்கூடிய பயன்பாடுகளுக்கோ மிகவும் பயனுள்ளதாக இருக்கும்.
பில்ட் டூல் நுண்ணறிவு: Webpack, Babel, மற்றும் ESLint
ரியாக்ட் பதிப்பை நேரடியாகக் கூறாவிட்டாலும், உங்கள் பில்ட் கருவிகள் மற்றும் லின்டர்கள் பெரும்பாலும் குறிப்பிட்ட ரியாக்ட் பதிப்புகளை ஊகிக்கின்றன அல்லது கோருகின்றன:
- Babel: உள்ளமைவு கோப்புகள் (எ.கா.,
.babelrcஅல்லதுbabel.config.js) பெரும்பாலும்@babel/preset-reactபோன்ற முன்னமைவுகளைக் கொண்டிருக்கும். Babel மற்றும் அதன் முன்னமைவுகளின் பதிப்பு உங்கள் ரியாக்ட் பதிப்பால் பயன்படுத்தப்படும் ஜாவாஸ்கிரிப்ட் அம்சங்களுடன் இணக்கமாக இருக்க வேண்டும். - ESLint:
eslint-plugin-reactபோன்ற செருகுநிரல்கள் ரியாக்ட்-குறிப்பிட்ட தொடரியல் மற்றும் சிறந்த நடைமுறைகளை சரிபார்க்க உள்ளமைக்கப்பட்டுள்ளன. இந்த செருகுநிரல்களுக்கு சரியாக செயல்பட அல்லது புதிய லின்டிங் விதிகளைப் பயன்படுத்த குறைந்தபட்ச ரியாக்ட் பதிப்பு தேவைகள் பெரும்பாலும் இருக்கும். - Create React App (CRA): நீங்கள் CRA உடன் உங்கள் புராஜெக்ட்டைத் தொடங்கியிருந்தால், பயன்படுத்தப்படும்
react-scripts-இன் குறிப்பிட்ட பதிப்பு, இணக்கமான ரியாக்ட் பதிப்புகளின் வரம்புடன் மறைமுகமாக இணைக்கப்பட்டிருக்கும்.
நிலையான ரியாக்ட் பயன்பாடுகளின் அடித்தளம் ஏன் இணக்கத்தன்மை ஆகும்
ரியாக்ட் பதிப்பு இணக்கத்தன்மையைப் புறக்கணிப்பது, நகரும் மணலில் ஒரு வீட்டைக் கட்டுவதைப் போன்றது. அது சிறிது காலம் நிற்கலாம், ஆனால் இறுதியில், விரிசல்கள் தோன்றி, உறுதியற்ற தன்மை, எதிர்பாராத நடத்தை, மற்றும் பேரழிவு தோல்விகளுக்கு வழிவகுக்கும்.
இணக்கமின்மையின் அபாயங்கள்: நுட்பமான பிழைகள் முதல் உற்பத்தி செயலிழப்புகள் வரை
ரியாக்ட் பதிப்புகள் அல்லது அவற்றின் தொடர்புடைய சார்புநிலைகள் இணக்கமாக இல்லாதபோது, பலவிதமான சிக்கல்கள் ஏற்படலாம்:
- இயக்கநேர பிழைகள் மற்றும் செயலிழப்புகள்: மிகவும் உடனடி மற்றும் கடுமையான விளைவு. இணக்கமற்ற API-கள், நீக்கப்பட்ட அம்சங்கள் அழைக்கப்படுவது, அல்லது எதிர்பாராத பக்க விளைவுகள் உங்கள் பயன்பாட்டை நிறுத்தும் அல்லது அதன் சில பகுதிகளை பயன்படுத்த முடியாததாக மாற்றும் ஜாவாஸ்கிரிப்ட் பிழைகளுக்கு வழிவகுக்கும்.
- நுட்பமான பிழைகள் மற்றும் சீரற்ற நடத்தை: செயலிழப்புகளை விட குறைவாகத் தெரிந்தாலும், இந்த சிக்கல்களை பிழைத்திருத்தம் செய்வது நம்பமுடியாத அளவிற்கு கடினமாக இருக்கும். ஒரு கூறு வெவ்வேறு சூழல்களில் வித்தியாசமாக ரெண்டர் ஆகலாம், அல்லது ஒரு குறிப்பிட்ட பயனர் தொடர்பு அடிப்படை பதிப்பு பொருத்தமின்மை காரணமாக அவ்வப்போது தோல்வியடையலாம்.
- செயல்திறன் பின்னடைவுகள்: புதிய ரியாக்ட் பதிப்புகள் பெரும்பாலும் செயல்திறன் மேம்படுத்தல்களுடன் வருகின்றன. ஒரு பழைய ரியாக்ட் பதிப்பு அல்லது இணக்கமற்ற அமைப்புடன் ஒரு பயன்பாட்டை இயக்குவது இந்த மேம்படுத்தல்கள் செயல்படுவதைத் தடுக்கலாம், இது மெதுவான ஏற்றுதல் நேரங்கள் அல்லது குறைந்த பதிலளிக்கக்கூடிய UI-களுக்கு வழிவகுக்கும்.
- பாதுகாப்பு பாதிப்புகள்: ரியாக்ட் மற்றும் அதன் சுற்றுச்சூழல் லைப்ரரிகளின் பழைய பதிப்புகளில் அறியப்பட்ட பாதுகாப்பு பாதிப்புகள் இருக்கலாம், அவை புதிய வெளியீடுகளில் சரிசெய்யப்பட்டுள்ளன. காலாவதியான மென்பொருளை இயக்குவது உங்கள் பயன்பாடு மற்றும் பயனர்களை ஆபத்தில் ஆழ்த்துகிறது, இது முக்கியத் தரவுகளைக் கையாளும் எந்தவொரு உலகளாவிய பயன்பாட்டிற்கும் ஒரு முக்கியமான கருத்தாகும்.
- சார்புநிலை நரகம் (Dependency Hell): உங்கள் புராஜெக்ட் வளரும்போது, அது பல மூன்றாம் தரப்பு லைப்ரரிகளைப் பெறுகிறது. இந்த லைப்ரரிகளுக்கு முரண்பாடான ரியாக்ட் பதிப்புத் தேவைகள் இருந்தால், நீங்கள் ஒரு "சார்புநிலை நரகத்தில்" சிக்கிக் கொள்ளலாம், அங்கு எந்த ஒரு ரியாக்ட் பதிப்பும் அனைத்துத் தேவைகளையும் பூர்த்தி செய்யாது, இது துண்டிக்கப்பட்ட அல்லது பராமரிக்க முடியாத பில்ட்களுக்கு வழிவகுக்கும்.
முன்னெச்சரிக்கை இணக்கத்தன்மை நிர்வாகத்தின் நன்மைகள்
மாறாக, இணக்கத்தன்மைக்கு ஒரு முன்னெச்சரிக்கை அணுகுமுறை குறிப்பிடத்தக்க நன்மைகளை அளிக்கிறது:
- வேகமான மேம்பாட்டு சுழற்சிகள்: டெவலப்பர்கள் பதிப்பு தொடர்பான சிக்கல்களைத் தீர்ப்பதில் குறைந்த நேரத்தைச் செலவிட்டு, அம்சங்களை உருவாக்குவதில் அதிக நேரத்தைச் செலவிடுகிறார்கள்.
- குறைக்கப்பட்ட பிழைத்திருத்த நேரம்: இணக்கமான சார்புநிலைகளைக் கொண்ட ஒரு நிலையான சூழல் குறைவான எதிர்பாராத நடத்தைகளைக் குறிக்கிறது, இது பிழைத்திருத்த முயற்சிகளை மிகவும் கவனம் செலுத்தி திறமையானதாக மாற்றுகிறது.
- புதிய அம்சங்கள் மற்றும் மேம்பட்ட டெவலப்பர் அனுபவத்திற்கான அணுகல்: புதுப்பித்த நிலையில் இருப்பது உங்கள் குழு ரியாக்ட்டின் சமீபத்திய அம்சங்கள், செயல்திறன் மேம்பாடுகள், மற்றும் டெவலப்பர் கருவிகளைப் பயன்படுத்த அனுமதிக்கிறது, இது உற்பத்தித்திறன் மற்றும் குறியீட்டின் தரத்தை அதிகரிக்கிறது.
- மேம்படுத்தப்பட்ட பாதுகாப்பு: தொடர்ந்து புதுப்பிப்பது, உங்கள் பயன்பாடு சமீபத்திய பாதுகாப்பு இணைப்புகளிலிருந்து பயனடைவதை உறுதிசெய்ய உதவுகிறது, இது அறியப்பட்ட பாதிப்புகளுக்கு எதிராகப் பாதுகாக்கிறது.
- உங்கள் குறியீட்டுத் தளத்தை எதிர்காலத்திற்குத் தயார்படுத்துதல்: முழுமையான எதிர்காலத்திற்குத் தயார்படுத்துவது சாத்தியமற்றது என்றாலும், இணக்கத்தன்மையை பராமரிப்பது உங்கள் பயன்பாடு ஒரு ஆரோக்கியமான மேம்படுத்தல் பாதையில் இருப்பதை உறுதிசெய்கிறது, இது எதிர்கால இடம்பெயர்வுகளை சுமூகமாகவும் குறைந்த செலவிலும் ஆக்குகிறது.
இணக்கத்தன்மை புதிரை வழிநடத்துதல்: ஒத்திசைக்க வேண்டிய முக்கிய கூறுகள்
முழுமையான இணக்கத்தன்மையை அடைய உங்கள் ரியாக்ட் சுற்றுச்சூழலின் பல ஒன்றோடொன்று இணைக்கப்பட்ட பகுதிகளுக்கு கவனம் தேவை.
இரட்டையர்கள்: react மற்றும் react-dom
முக்கிய லைப்ரரிகளான, react மற்றும் react-dom, பிரிக்கமுடியாத வகையில் இணைக்கப்பட்டுள்ளன. react கூறுகளையும் உருவாக்குவதற்கும் நிர்வகிப்பதற்குமான முக்கிய தர்க்கத்தைக் கொண்டுள்ளது, அதே நேரத்தில் react-dom DOM-குறிப்பிட்ட ரெண்டரிங் திறன்களை வழங்குகிறது. அவை உங்கள் புராஜெக்ட்டில் எப்போதும் ஒரே பதிப்பாக (மேஜர், மைனர், மற்றும் பேட்ச்) இருக்க வேண்டும். பொருந்தாத பதிப்புகள் குழப்பமான பிழைகளின் பொதுவான மூலமாகும்.
மூன்றாம் தரப்பு லைப்ரரிகள் மற்றும் UI கட்டமைப்புகள்
பெரும்பாலான ரியாக்ட் பயன்பாடுகள் மூன்றாம் தரப்பு லைப்ரரிகள் மற்றும் UI கட்டமைப்புகளின் (எ.கா., Material-UI, Ant Design, React Router, Redux) பரந்த சுற்றுச்சூழல் அமைப்பை பெரிதும் சார்ந்துள்ளன. இந்த லைப்ரரிகளில் ஒவ்வொன்றும் வெளிப்படையாகவோ அல்லது மறைமுகமாகவோ குறிப்பிட்ட ரியாக்ட் பதிப்புகளுடன் அதன் இணக்கத்தன்மையை அறிவிக்கிறது.
peerDependencies: பல லைப்ரரிகள் தங்கள்package.json-இல்peerDependencies-ஐக் குறிப்பிடுகின்றன, இது அவை வேலை செய்ய எதிர்பார்க்கும் ரியாக்ட் பதிப்புகளைக் குறிக்கிறது. உதாரணமாக,"react": ">=16.8.0". இவற்றை எப்போதும் சரிபார்க்கவும்.- அதிகாரப்பூர்வ ஆவணங்கள் மற்றும் வெளியீட்டுக் குறிப்புகள்: இணக்கத்தன்மை தகவலுக்கான மிகவும் நம்பகமான ஆதாரம் ஒவ்வொரு லைப்ரரியின் அதிகாரப்பூர்வ ஆவணங்கள் மற்றும் வெளியீட்டுக் குறிப்புகள் ஆகும். ஒரு பெரிய ரியாக்ட் மேம்படுத்தலுக்கு முன், உங்கள் முக்கிய சார்புநிலைகளால் வழங்கப்படும் இணக்கத்தன்மை மெட்ரிக்ஸ் அல்லது மேம்படுத்தல் வழிகாட்டிகளை மதிப்பாய்வு செய்யவும்.
- சமூக வளங்கள்: GitHub சிக்கல்கள், புராஜெக்ட் கலந்துரையாடல் மன்றங்கள், மற்றும் Stack Overflow ஆகியவை அறியப்பட்ட இணக்கத்தன்மை சிக்கல்கள் மற்றும் தீர்வுகளை அடையாளம் காண மதிப்புமிக்க ஆதாரங்களாக இருக்கலாம்.
பில்ட் சுற்றுச்சூழல்: Babel, Webpack, மற்றும் ESLint
உங்கள் பில்ட் கருவிகள் மற்றும் லின்டர்கள் உங்கள் ரியாக்ட் குறியீட்டை மாற்றுவதிலும் சரிபார்ப்பதிலும் ஒரு முக்கிய பங்கு வகிக்கின்றன. அவற்றின் பதிப்புகள் மற்றும் உள்ளமைவுகள் நீங்கள் தேர்ந்தெடுத்த ரியாக்ட் பதிப்போடு ஒத்துப்போக வேண்டும்:
- Babel: ரியாக்ட் பயன்பாடுகள் பெரும்பாலும் நவீன ஜாவாஸ்கிரிப்ட்/JSX-ஐ உலாவிக்கு இணக்கமான குறியீடாக மாற்ற Babel-ஐப் பயன்படுத்துகின்றன. உங்கள் Babel முன்னமைவுகள் (எ.கா.,
@babel/preset-react) மற்றும் செருகுநிரல்கள் புதுப்பித்த நிலையில் இருப்பதையும், உங்கள் ரியாக்ட் பதிப்பால் எதிர்பார்க்கப்படும் குறிப்பிட்ட ஜாவாஸ்கிரிப்ட் அம்சங்கள் மற்றும் JSX மாற்றங்களைக் கையாள உள்ளமைக்கப்பட்டுள்ளதையும் உறுதிசெய்யவும். பழைய Babel உள்ளமைவுகள் புதிய ரியாக்ட் தொடரியலை சரியாக செயலாக்கத் தவறக்கூடும். - Webpack (அல்லது Vite, Rollup போன்ற பிற பண்ட்லர்கள்): பண்ட்லர்கள் பொதுவாக ரியாக்ட்டிற்கு பதிப்பு-அஞ்ஞானமாக இருந்தாலும், அவற்றின் லோடர்கள் (எ.கா., Webpack-க்கான
babel-loader) Babel வழியாக உள்ளமைக்கப்படுகின்றன, இது அவற்றின் இணக்கத்தன்மையை Babel அமைப்பைப் பொறுத்தது ஆக்குகிறது. - ESLint:
eslint-plugin-reactஎன்பது ரியாக்ட்-குறிப்பிட்ட லின்டிங் விதிகளைச் செயல்படுத்த ஒரு சக்திவாய்ந்த கருவியாகும். தவறான நேர்மறைகள் அல்லது தவறவிட்ட லின்டிங் வாய்ப்புகளைத் தவிர்க்க அதன் பதிப்பு மற்றும் உள்ளமைவு (எ.கா.,settings.react.version) உங்கள் புராஜெக்ட்டின் ரியாக்ட் பதிப்பை துல்லியமாக பிரதிபலிக்கிறதா என்பதை உறுதிசெய்யவும்.
ஜாவாஸ்கிரிப்ட்/டைப்ஸ்கிரிப்ட் மொழி அம்சங்கள்
புதிய ரியாக்ட் பதிப்புகள் பெரும்பாலும் நவீன ஜாவாஸ்கிரிப்ட் அம்சங்களை (எ.கா., விருப்ப சங்கிலி, பூஜ்ஜிய கோலெசிங், தனியார் வகுப்பு புலங்கள்) பயன்படுத்துகின்றன. உங்கள் புராஜெக்ட் ஒரு பழைய ஜாவாஸ்கிரிப்ட் டிரான்ஸ்பைலர் உள்ளமைவைப் பயன்படுத்தினால், அது இந்த அம்சங்களை சரியாக செயலாக்கத் தவறலாம், இது பில்ட் தோல்விகள் அல்லது இயக்கநேர பிழைகளுக்கு வழிவகுக்கும். இதேபோல், நீங்கள் டைப்ஸ்கிரிப்ட் பயன்படுத்தினால், உங்கள் டைப்ஸ்கிரிப்ட் கம்பைலர் பதிப்பு உங்கள் ரியாக்ட் பதிப்பு மற்றும் தேவைப்படும் எந்த குறிப்பிட்ட JSX வகை வரையறைகளுடனும் இணக்கமாக இருப்பதை உறுதிசெய்யவும்.
உலாவி மற்றும் இயக்கநேர சூழல்கள்
ரியாக்ட் தானாகவே பல குறுக்கு-உலாவி இணக்கத்தன்மையைக் கையாண்டாலும், நீங்கள் பயன்படுத்தும் ஜாவாஸ்கிரிப்ட் அம்சங்கள் மற்றும் உங்கள் பில்ட் கருவிகளின் வெளியீடு ஆகியவை உங்கள் இலக்கு உலாவி பார்வையாளர்களுடன் இணக்கமாக இருக்க வேண்டும். சர்வர்-சைட் ரெண்டரிங் (SSR) க்கு, உங்கள் சேவையகத்தை இயக்கும் Node.js பதிப்பும் உங்கள் ரியாக்ட் பதிப்பு மற்றும் எந்த சர்வர்-குறிப்பிட்ட சார்புநிலைகளுடனும் இணக்கமாக இருக்க வேண்டும்.
வலுவான இணக்கத்தன்மை சரிபார்ப்பு மற்றும் நிர்வாகத்திற்கான உத்திகள் மற்றும் கருவிகள்
திறமையான இணக்கத்தன்மை மேலாண்மை என்பது குறிப்பிட்ட கருவிகள் மற்றும் உத்திகளிலிருந்து பயனடையும் ஒரு தொடர்ச்சியான செயல்முறையாகும்.
முன்னெச்சரிக்கை சார்புநிலை சுகாதார சோதனைகள்
npm outdated/yarn outdated: இந்த கட்டளைகள் உங்கள் புராஜெக்ட்டில் எந்த பேக்கேஜ்கள் காலாவதியானவை என்பதற்கான ஒரு விரைவான கண்ணோட்டத்தை வழங்குகின்றன. அவை தற்போதைய நிறுவப்பட்ட பதிப்பு,package.json-இல் குறிப்பிடப்பட்ட பதிப்பு, மற்றும் கிடைக்கும் சமீபத்திய பதிப்பைக் காட்டுகின்றன. இது சாத்தியமான புதுப்பிப்புகளை அடையாளம் காண உதவுகிறது.npm audit/yarn audit: பாதுகாப்பிற்கு முக்கியமானது, இந்த கட்டளைகள் உங்கள் சார்புநிலை மரத்தை அறியப்பட்ட பாதிப்புகளுக்கு ஸ்கேன் செய்து, அவற்றைத் தீர்க்கும் புதுப்பிப்புகளை அடிக்கடி பரிந்துரைக்கின்றன. தணிக்கைகளைத் தவறாமல் இயக்குவது பாதுகாப்பு அபாயங்களைக் குறைக்க ஒரு உலகளாவிய சிறந்த நடைமுறையாகும்.
லாக் கோப்புகளுடன் கட்டுப்படுத்தப்பட்ட புதுப்பிப்புகள்
லாக் கோப்புகள் (npm-க்கு package-lock.json, Yarn-க்கு yarn.lock) வெவ்வேறு சூழல்கள் மற்றும் குழு உறுப்பினர்களிடையே சீரான நிறுவல்களுக்கு அவசியமானவை. அவை ஒவ்வொரு சார்புநிலையின் (மற்றும் அதன் துணை சார்புநிலைகளின்) சரியான பதிப்பை நிறுவலின் போது பொருத்துகின்றன. இது ஒரு புதிய டெவலப்பர் ஒரு குழுவில் சேரும்போது அல்லது ஒரு CI/CD பைப்லைன் இயங்கும்போது, அவர்கள் அதே சார்புநிலை மரத்தை நிறுவுவதை உறுதிசெய்கிறது, இது நுட்பமான பதிப்பு வேறுபாடுகளால் ஏற்படும் "என் கணினியில் வேலை செய்கிறது" சிக்கல்களைத் தடுக்கிறது. உங்கள் லாக் கோப்புகளை எப்போதும் பதிப்புக் கட்டுப்பாட்டில் சமர்ப்பிக்கவும்.
தானியங்கு சோதனை: உங்கள் பாதுகாப்பு வலை
ஒரு விரிவான தானியங்கு சோதனைத் தொகுப்பு இணக்கத்தன்மை சிக்கல்களுக்கு எதிரான உங்கள் மிகவும் நம்பகமான பாதுகாப்பாகும். எந்தவொரு ரியாக்ட் பதிப்பு மேம்படுத்தலுக்கு முன்னும் பின்னும், உங்கள் சோதனைகளை கடுமையாக இயக்கவும்:
- யூனிட் சோதனைகள்: உங்கள் கூறுகளின் மற்றும் பயன்பாட்டு செயல்பாடுகளின் தனிப்பட்ட நடத்தையைச் சரிபார்க்கவும் (எ.கா., Jest மற்றும் React Testing Library-ஐப் பயன்படுத்தி).
- ஒருங்கிணைப்பு சோதனைகள்: வெவ்வேறு கூறுகள் மற்றும் தொகுதிகள் சரியாக ஊடாடுவதை உறுதிசெய்யவும்.
- முழுமையான (E2E) சோதனைகள்: முழு பயன்பாடும் இயங்கும்போது மட்டுமே தோன்றக்கூடிய சிக்கல்களைப் பிடிக்க உண்மையான பயனர் பாய்வுகளை உருவகப்படுத்தவும் (எ.கா., Cypress, Playwright-ஐப் பயன்படுத்தி).
ஒரு மேம்படுத்தலுக்குப் பிறகு தோல்வியுற்ற சோதனைத் தொகுப்பு உடனடியாக ஒரு இணக்கத்தன்மை சிக்கலைக் கொடியிடுகிறது, இது பயனர்களைப் பாதிக்கும் முன் அதைச் சரிசெய்ய உங்களை அனுமதிக்கிறது.
தொடர்ச்சியான ஒருங்கிணைப்பு/வரிசைப்படுத்தல் (CI/CD) பைப்லைன்கள்
உங்கள் இணக்கத்தன்மை சரிபார்ப்புகள் மற்றும் தானியங்கு சோதனைகளை உங்கள் CI/CD பைப்லைனில் ஒருங்கிணைக்கவும். ஒவ்வொரு முறையும் குறியீடு தள்ளப்படும்போது, பைப்லைன் தானாகவே:
- சார்புநிலைகளை நிறுவ வேண்டும் (லாக் கோப்புகளைப் பயன்படுத்தி).
- சார்புநிலை சுகாதார சோதனைகளை இயக்க வேண்டும் (எ.கா.,
npm audit). - யூனிட், ஒருங்கிணைப்பு, மற்றும் E2E சோதனைகளை இயக்க வேண்டும்.
- பயன்பாட்டைக் கட்டமைக்க வேண்டும்.
இந்த தானியங்கு செயல்முறை எந்தவொரு இணக்கத்தன்மை பின்னடைவுகளும் வளர்ச்சிச் சுழற்சியின் ஆரம்பத்திலேயே, அவை உற்பத்திக்குச் செல்வதற்கு நீண்ட காலத்திற்கு முன்பே பிடிக்கப்படுவதை உறுதி செய்கிறது. உலகளாவிய குழுக்களுக்கு, CI/CD ஒரு சீரான, பக்கச்சார்பற்ற சரிபார்ப்பு அடுக்கை வழங்குகிறது, இது தனிப்பட்ட டெவலப்பர் சூழல்களைக் கடந்து செல்கிறது.
ஆவணங்கள் மற்றும் சமூகத்தின் சக்தி
- அதிகாரப்பூர்வ ரியாக்ட் மேம்படுத்தல் வழிகாட்டிகள்: ரியாக்ட் குழு மேஜர் பதிப்புகளுக்கு நம்பமுடியாத அளவிற்கு விரிவான இடம்பெயர்வு வழிகாட்டிகளை வழங்குகிறது (எ.கா., "ரியாக்ட் 18-க்கு மேம்படுத்துதல்"). இந்த வழிகாட்டிகள் விலைமதிப்பற்றவை, உடைக்கும் மாற்றங்கள், புதிய API-கள், மற்றும் பரிந்துரைக்கப்பட்ட இடம்பெயர்வு உத்திகளை கோடிட்டுக் காட்டுகின்றன.
- லைப்ரரி சேஞ்ச்லாக்ஸ் மற்றும் வெளியீட்டுக் குறிப்புகள்: ஒவ்வொரு மூன்றாம் தரப்பு லைப்ரரிக்கும், ரியாக்ட் இணக்கத்தன்மை மற்றும் சாத்தியமான உடைக்கும் மாற்றங்கள் தொடர்பான குறிப்பிட்ட வழிமுறைகளுக்கு அதன் சேஞ்ச்லாக் அல்லது வெளியீட்டுக் குறிப்புகளைப் பார்க்கவும்.
- சமூக ஈடுபாடு: ரியாக்ட் சமூகம் துடிப்பானது மற்றும் செயலில் உள்ளது. மன்றங்கள், GitHub சிக்கல்கள், Stack Overflow, மற்றும் Discord சேனல்கள் மற்றவர்கள் ஏற்கனவே சந்தித்து தீர்த்திருக்கக்கூடிய இணக்கத்தன்மை சிக்கல்களைத் தீர்ப்பதற்கான சிறந்த ஆதாரங்கள்.
உலகளாவிய சூழலில் தடையற்ற ரியாக்ட் மேம்படுத்தல்களுக்கான சிறந்த நடைமுறைகள்
ரியாக்ட்டை மேம்படுத்துவது, குறிப்பாக மேஜர் பதிப்புகளை, ஒரு மூலோபாய அணுகுமுறை தேவை. ஒரு சுமூகமான மாற்றத்தை உறுதி செய்வதற்கான சிறந்த நடைமுறைகள் இங்கே, குறிப்பாக பரவலாக்கப்பட்ட குழுக்களுக்கு.
திட்டமிட்டு உன்னிப்பாகத் தயாராகுங்கள்
- உங்கள் தற்போதைய நிலையை மதிப்பிடுங்கள்: உங்கள் தற்போதைய ரியாக்ட் பதிப்பு, அனைத்து முதன்மை மற்றும் இரண்டாம் நிலை சார்புநிலைகள், மற்றும் அவற்றின் அறிவிக்கப்பட்ட இணக்கத்தன்மையை ஆவணப்படுத்துங்கள். சாத்தியமான வலி புள்ளிகளை அடையாளம் காணுங்கள்.
- வெளியீட்டுக் குறிப்புகளை மதிப்பாய்வு செய்யுங்கள்: இலக்கு பதிப்பிற்கான அதிகாரப்பூர்வ ரியாக்ட் வெளியீட்டுக் குறிப்புகள் மற்றும் இடம்பெயர்வு வழிகாட்டிகளை முழுமையாகப் படியுங்கள். அனைத்து உடைக்கும் மாற்றங்கள் மற்றும் புதிய அம்சங்களைப் புரிந்து கொள்ளுங்கள்.
- வளங்களை ஒதுக்குங்கள்: மேஜர் மேம்படுத்தல்களுக்கு டெவலப்பர்களிடமிருந்து மட்டுமல்ல, QA மற்றும் தயாரிப்புக் குழுக்களிடமிருந்தும் பிரத்யேக நேரம் மற்றும் முயற்சி தேவை என்பதைப் புரிந்து கொள்ளுங்கள். உலகளாவிய குழுக்களுக்கு, தகவல் தொடர்பு மற்றும் ஒத்துழைப்பிற்கான நேர மண்டல வேறுபாடுகளைக் கணக்கில் எடுத்துக் கொள்ளுங்கள்.
- ஒரு பிரத்யேக கிளையை உருவாக்குங்கள்: தற்போதைய மேம்பாட்டை சீர்குலைப்பதைத் தவிர்க்க, மேம்படுத்தல் வேலையை ஒரு தனி Git கிளையில் தனிமைப்படுத்துங்கள்.
படிப்படியான மேம்படுத்தல்கள்: "பெரு வெடிப்பு" அணுகுமுறையைத் தவிர்க்கவும்
முற்றிலும் அவசியமில்லை என்றால், பல மேஜர் பதிப்புகளைத் தவிர்ப்பதைத் தவிர்க்கவும். 16-இலிருந்து 18-க்கு நேரடியாக மேம்படுத்துவதை விட 17-இலிருந்து 18-க்கு மேம்படுத்துவது பெரும்பாலும் எளிதானது, ஏனெனில் நீங்கள் இடைநிலை இடம்பெயர்வு வழிகாட்டிகளைப் பயன்படுத்தலாம் மற்றும் சிக்கல்களைப் படிப்படியாக தீர்க்கலாம். சமீபத்திய மேஜர் வெளியீட்டிற்கான இடைவெளியைக் குறைக்க மைனர் மற்றும் பேட்ச் பதிப்புகளைத் தவறாமல் புதுப்பிக்கவும்.
பெரிய அளவிலான இடம்பெயர்வுகளுக்கு கோட்மாட்களைப் பயன்படுத்தவும்
பரவலான குறியீடு மறுசீரமைப்பு தேவைப்படும் குறிப்பிடத்தக்க உடைக்கும் மாற்றங்களுக்கு, ரியாக்ட் குழு மற்றும் சமூகம் பெரும்பாலும் "கோட்மாட்களை" வழங்குகின்றன (எ.கா., react-codemod வழியாக). இவை உங்கள் குறியீட்டுத் தளத்தை புதிய API-களுடன் சீரமைக்க மாற்றக்கூடிய தானியங்கு ஸ்கிரிப்டுகள். அவை எண்ணற்ற மணிநேர கையேடு மறுசீரமைப்பைச் சேமிக்க முடியும், பெரிய குறியீட்டுத் தளங்கள் மற்றும் பரவலாக்கப்பட்ட குழுக்களுக்கு மேஜர் மேம்படுத்தல்களை மிகவும் சாத்தியமாக்குகின்றன.
staging சூழல் உங்கள் சிறந்த நண்பன்
ஒரு staging அல்லது முன்-உற்பத்தி சூழலில் விரிவான சோதனை இல்லாமல் ஒரு பெரிய ரியாக்ட் மேம்படுத்தலை நேரடியாக உற்பத்திக்கு வரிசைப்படுத்த வேண்டாம். இந்த சூழல் உங்கள் உற்பத்தி அமைப்பை நெருக்கமாகப் பிரதிபலிக்க வேண்டும், இது உங்களை அனுமதிக்கிறது:
- முழுமையான செயல்பாட்டு சோதனையைச் செய்யவும்.
- பின்னடைவுகளைச் சரிபார்க்க செயல்திறன் கண்காணிப்பை நடத்தவும்.
- ஒரு பரந்த உள் பார்வையாளர்களிடமிருந்து கருத்துக்களைச் சேகரிக்கவும்.
- சூழல்-குறிப்பிட்ட சிக்கல்களை அடையாளம் கண்டு தீர்க்கவும்.
மேம்படுத்தலுக்குப் பிந்தைய கண்காணிப்பு மற்றும் பின்னூட்ட வளையம்
ஒரு வெற்றிகரமான வரிசைப்படுத்தலுக்குப் பிறகும், விழிப்புடன் இருங்கள். உங்கள் பயன்பாட்டின் பிழை பதிவுகள், செயல்திறன் அளவீடுகள், மற்றும் பயனர் கருத்துக்களை நெருக்கமாகக் கண்காணிக்கவும். விரைவாக தீர்க்க முடியாத முக்கியமான சிக்கல்கள் தோன்றினால் முந்தைய பதிப்பிற்குத் திரும்பத் தயாராக இருங்கள். மேம்படுத்தலுக்குப் பிந்தைய முரண்பாடுகளைப் புகாரளிப்பதற்கும் தீர்ப்பதற்கும் உங்கள் உலகளாவிய குழுவிற்குள் ஒரு தெளிவான தகவல் தொடர்பு சேனலை நிறுவவும்.
முடிவு: நீடித்த ரியாக்ட் பயன்பாடுகளுக்கான பரிணாமத்தை ஏற்றுக்கொள்வது
ரியாக்ட் பதிப்புகளை நிர்வகிப்பது மற்றும் இணக்கத்தன்மையை உறுதி செய்வது நவீன முன்முனை மேம்பாட்டின் இன்றியமையாத அம்சமாகும். இது ஒரு முறை செய்யும் பணி அல்ல, மாறாக உங்கள் பயன்பாடுகளின் ஆரோக்கியம், பாதுகாப்பு, மற்றும் செயல்திறனுக்கான ஒரு தொடர்ச்சியான அர்ப்பணிப்பு. செமென்டிக் பதிப்பக முறையைப் புரிந்துகொள்வதன் மூலமும், பதிப்பு சரிபார்ப்பிற்குக் கிடைக்கும் கருவிகளைப் பயன்படுத்துவதன் மூலமும், உங்கள் முழு சுற்றுச்சூழல் முழுவதும் இணக்கத்தன்மையை முன்கூட்டியே நிவர்த்தி செய்வதன் மூலமும், மற்றும் மூலோபாய மேம்படுத்தல் நடைமுறைகளை ஏற்றுக்கொள்வதன் மூலமும், டெவலப்பர்கள் ரியாக்ட்டின் வளரும் நிலப்பரப்பை நம்பிக்கையுடன் வழிநடத்த முடியும்.
சர்வதேச குழுக்களுக்கு, இந்த கொள்கைகள் இன்னும் முக்கியமானதாகின்றன. பதிப்பு உத்திகளின் பகிரப்பட்ட, தெளிவான புரிதல் மற்றும் மேம்படுத்தல்களுக்கான ஒரு சீரான அணுகுமுறை சிறந்த ஒத்துழைப்பை வளர்க்கிறது, பல்வேறு மேம்பாட்டுச் சூழல்களில் உராய்வைக் குறைக்கிறது, மற்றும் இறுதியில் உலகளாவிய பயனர் தளத்திற்கு மேலும் மீள்தன்மையுள்ள மற்றும் எதிர்காலத்திற்குத் தயாரான ரியாக்ட் பயன்பாடுகளை உருவாக்க பங்களிக்கிறது. பரிணாமத்தை ஏற்றுக்கொள்ளுங்கள், தகவலறிந்திருங்கள், மற்றும் உங்கள் ரியாக்ட் பயன்பாடுகள் செழிக்கட்டும்.